import type { RouteRecordRaw } from 'vue-router'
// 定义视图目录
const VIEWS_DIRECTORY = 'views'

// 定义组件目录
const COMPONENT_DIRECTORY = `../${VIEWS_DIRECTORY}/**/index.vue`
// 定义页面目录
const PAGE_DIRECTORY = `../${VIEWS_DIRECTORY}/**/page.ts`

/** 导入页面目录下默认导出的所有文件 */
const pages = import.meta.glob(PAGE_DIRECTORY, {
  eager: true,
  import: 'default'
})

/** 导入组件目录下的所有文件 */
const components = import.meta.glob(COMPONENT_DIRECTORY)

/**
 * 将文件目录转换为路由
 */
export const dynamicRoutes = Object.entries(pages).map(([path, meta]) => {
  // 将路径中的'/page.ts'替换为'/index.vue'
  const compPath = path.replace('/page.ts', '/index.vue')
  // 获取组件
  const component = components[compPath]
  // 将路径中的'../views'替换为空，并将'/page.ts'替换为空，如果路径为空，则设置为'/'，否则将路径中的'/'替换为'-'
  path =
    path.replace(`../${VIEWS_DIRECTORY}`, '').replace('/page.ts', '') || '/'
  // 将路径中的'/'替换为'-'
  const name = path.split('/').filter(Boolean).join('-') || 'index'
  // 返回一个对象，包含路径、名称、组件和元数据
  return {
    path,
    name,
    component,
    meta
  } as RouteRecordRaw
})
